import sys
from PySide6.QtWidgets import QApplication, QWidget, QLabel, QComboBox, QVBoxLayout
from PySide6.QtCore import QTranslator, QLocale, QEvent
import resources  # 导入资源文件

class LanguageSwitcher(QWidget):
    def __init__(self):
        super().__init__()

        # 设置窗口标题
        self.setWindowTitle("Language Switcher")

        # 创建布局
        layout = QVBoxLayout()

        # 创建下拉菜单
        self.language_combo = QComboBox()
        self.language_combo.addItem("English", "en_US")  # 添加英文选项
        self.language_combo.addItem("中文", "zh_CN")  # 添加中文选项
        self.language_combo.currentIndexChanged.connect(self.change_language)  # 绑定事件

        # 创建标签
        self.label = QLabel(self.tr("Hello!"))  # 使用 tr() 标记需要翻译的字符串

        # 将控件添加到布局
        layout.addWidget(self.language_combo)
        layout.addWidget(self.label)

        # 设置窗口布局
        self.setLayout(layout)

        # 初始化翻译器
        self.translator = QTranslator()

    def change_language(self):
        """根据下拉菜单的选择切换语言"""
        selected_language = self.language_combo.currentData()  # 获取当前选中的语言代码

        # 加载对应的翻译文件
        if selected_language == "zh_CN":
            print("尝试加载中文翻译文件：:/translations/zh_CN.qm")
            # if self.translator.load(":/translations/zh_CN.qm"):  # 加载资源中的中文翻译文件
            if self.translator.load("translations/zh_CN.qm"):  # 加载中文翻译文件
                print("中文翻译文件加载成功")
            else:
                print("中文翻译文件加载失败")
        elif selected_language == "en_US":
            print("尝试加载英文翻译文件：:/translations/en_US.qm")
            # if self.translator.load(":/translations/en_US.qm"):  # 加载资源中的英文翻译文件
            if self.translator.load("translations/en_US.qm"):  # 加载英文翻译文件
                print("英文翻译文件加载成功")
            else:
                print("英文翻译文件加载失败")

        # 安装翻译器
        QApplication.instance().installTranslator(self.translator)

        # 更新界面
        self.label.setText(self.tr("Hello!"))

    def changeEvent(self, event):
        """重写 changeEvent 以在语言切换时更新界面"""
        if event.type() == QEvent.LanguageChange:
            print("语言切换事件触发")
            self.label.setText(self.tr("Hello!"))
        super().changeEvent(event)


if __name__ == "__main__":
    app = QApplication(sys.argv)

    # 创建窗口
    window = LanguageSwitcher()
    window.show()

    # 运行应用
    sys.exit(app.exec())